Skip to content

YOLO 错误码说明 - YoloErrorCodes

概述

以下 YOLO 接口在失败时返回负数,其绝对值即为错误码,与 GetLastError() 返回值一致:

  • 加载类:YoloLoadModel / YoloLoadModelEx / YoloLoadModelMemory / YoloLoadModelMemoryEx
  • 管理类:YoloReleaseModel / YoloSetModelConfig / YoloSetModelConfigByKey / YoloWarmup / YoloClearError
  • 加解密类:YoloEncryptModel / YoloEncryptModelEx / YoloDecryptModel / YoloDecryptModelEx

成功时:

  • 加载类:返回 大于 0 的模型句柄
  • 操作类:返回 1

推理类接口(YoloDetect* / YoloClassify* / …)仍返回 JSON 字符串;失败时 JSON 含 "success":false,同时会写入 GetLastError(),便于统一排查。

失败时建议同时调用:

  • GetLastError():获取错误码(正整数,如 8006
  • GetLastErrorString():获取中文说明(用完后 FreeStringPtr 释放)
  • YoloGetLastError():获取后端详细错误文本/JSON(GPU 设备列表等)
cpp
long handle = ola.YoloLoadModelEx("models/yolo11n.onnx", "", "person|car", 1, 0, -1);
if (handle <= 0) {
    int err = GetLastError();                 // 例如 8006
    int code = handle < 0 ? (int)(-handle) : err;
    char* msg = (char*)GetLastErrorString();
    char* yoloMsg = (char*)ola.YoloGetLastError();
    // 根据 code 排查,见下表
    FreeStringPtr((int64_t)msg);
    FreeStringPtr((int64_t)yoloMsg);
} else {
    // handle 可用于 Detect / Classify / ...
    ola.YoloReleaseModel(handle);
}

重要:判断加载是否成功请用 handle > 0,不要再用 handle != 0(失败时返回负错误码)。

通用错误(10xx)

返回值GetLastError说明排查建议
-10011001权限不足 / 未登录Login/Reg;FeatureList 须含 Yolos / YOLO 特性
-10031003参数无效instance 无效等

YOLO 错误(80xx)

返回值GetLastError说明排查建议
-80018001YOLO 参数无效空路径、非法内存地址/长度、类型越界;NCNN 缺 .param
-80028002模型/标签/图片文件不存在检查路径、SetPath 工作目录、文件是否可读
-80038003非欧拉加密包或包格式无效明文请用 YoloLoadModelEx;加密包用 YoloLoadModel
-80048004加密包密码错误或为空检查 password
-80058005加密包解密失败密码、包损坏、头信息不完整
-80068006后端加载模型失败权重与 inferenceType/modelType 是否匹配;看 YoloGetLastError
-80078007无效的 YOLO 模型句柄是否已 Release;句柄是否来自本实例
-80088008模型加密打包或写出失败写出路径权限、磁盘空间;savePath 是否可写
-80098009模型配置失败JSON 字段名是否合法;句柄是否有效
-80108010推理设备不可用 / GPU 索引越界先用 YoloListDevices 取合法 DeviceIndex;TensorRT/ONNX 须选 NVIDIA;可改 -1 CPU(TensorRT 不支持 CPU)
-80118011图像无效或读取失败imagePtr / 文件路径
-80128012屏幕区域截图失败绑定窗口、区域坐标、截图后端
-80138013当前构建未启用 YOLO使用带 YOLO 的发布包
-80998099YOLO 操作内部异常联系支持并提供日志
-99999999未知错误查看日志 / YoloGetLastError

加解密常见排查(YoloEncryptModel / Ex)

现象常见返回值说明
ONNX 能加密、NCNN 失败-8002 / -8001NCNN(modelType=2)需可读的 .bin + .param;相对路径相对 SetPath 工作目录
names / labels 找不到-8002namesLabel 为文件路径时同样走 WorkPath;内联 `
加密写出失败-8008savePath 目录无写权限或磁盘不足;目录不存在时一般会自动创建父目录
参数为空-8001modelPath / password / savePath 不可为空

判断成功:加解密 / 配置类接口成功返回 1;失败返回负错误码(如 -8002),不要再用 ret == 0 判断失败。

cpp
int ret = ola.YoloEncryptModel(
    "/yolo/best.ncnn.bin", "/yolo/best.ncnn.param", "/yolo/class_name.names",
    "123456", 2, 0, "/models/dxr.olam");
if (ret != 1) {
    int code = ret < 0 ? -ret : GetLastError(); // 例如 8002
    char* msg = (char*)GetLastErrorString();
    // 根据 code / msg 排查
    FreeStringPtr((int64_t)msg);
}

相关接口

接口说明
YoloLoadModelEx加载明文模型
YoloLoadModel加载加密包
YoloEncryptModel加密到文件
YoloEncryptModelEx加密到内存
YoloGetLastError后端详情(亦可用插件 GetLastErrorString
GetLastError读取错误码
YOLO 模块总览流水线与选型